home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 2 / Gekikoh Dennoh Club Vol. 2 (Japan).7z / Gekikoh Dennoh Club Vol. 2 (Japan) (Track 01).bin / fsw / zm302 / zm302_s.lzh / MPSRC045.LZH / P8_EFFECT.HAS < prev    next >
Text File  |  1996-11-18  |  5KB  |  253 lines

  1. *=======================================================
  2. *
  3. *    IOCS各周波数8bitPCM変換
  4. *
  5. *=======================================================
  6.  
  7. PCM8_EFCT01_08:sub.l        #(MIX_SIZE*2)/8,EFCT_PCM_LEN(a5)    * 1/4再生
  8.         bgt        @f
  9.         bsr        PCM8_EFCT_end        * 軽さ重視です。すまん。
  10.  
  11. @@:        movea.l        EFCT_PCM_ADR(a5),a0    * a0.l = PCMアドレス
  12.         moveq.l        #(MIX_SIZE*2)/8-1,d6    * 8bitPCM 変換
  13. 1:        move.b        (a0)+,d0
  14.         ext.w        d0
  15.         add.w        d0,(a1)+
  16.         add.w        d0,(a1)+
  17.         add.w        d0,(a1)+
  18.         add.w        d0,(a1)+
  19.         add.w        d0,(a1)+
  20.         add.w        d0,(a1)+
  21.         add.w        d0,(a1)+
  22.         add.w        d0,(a1)+
  23.         dbra        d6,1b
  24.  
  25.         move.l        a0,EFCT_PCM_ADR(a5)    * a0.l = PCMアドレス
  26.         rts
  27.  
  28. PCM8_EFCT01_06:sub.l        #(MIX_SIZE*2)/6,EFCT_PCM_LEN(a5)    * 1/6再生
  29.         bgt        @f
  30.         bsr        PCM8_EFCT_end
  31.  
  32. @@:        movea.l        EFCT_PCM_ADR(a5),a0    * a0.l = PCMアドレス
  33.         moveq.l        #(MIX_SIZE*2)/6-1,d6    * 16bitPCM 変換
  34. 1:        move.b        (a0)+,d0
  35.         ext.w        d0
  36.         add.w        d0,(a1)+
  37.         add.w        d0,(a1)+
  38.         add.w        d0,(a1)+
  39.         add.w        d0,(a1)+
  40.         add.w        d0,(a1)+
  41.         add.w        d0,(a1)+
  42.         dbra        d6,1b
  43.  
  44.         move.l        a0,EFCT_PCM_ADR(a5)    * a0.l = PCMアドレス
  45.         rts
  46.  
  47. PCM8_EFCT01_04:sub.l        #(MIX_SIZE*2)/4,EFCT_PCM_LEN(a5)    * 1/4再生(3.9kHz)
  48.         bgt        @f
  49.         bsr        PCM8_EFCT_end        * 軽さ重視です。すまん。
  50.  
  51. @@:        movea.l        EFCT_PCM_ADR(a5),a0    * a0.l = PCMアドレス
  52.         moveq.l        #(MIX_SIZE*2)/4-1,d6    * 8bitPCM 変換
  53. 1:        move.b        (a0)+,d0
  54.         ext.w        d0
  55.         add.w        d0,(a1)+
  56.         add.w        d0,(a1)+
  57.         add.w        d0,(a1)+
  58.         add.w        d0,(a1)+
  59.         dbra        d6,1b
  60.  
  61.         move.l        a0,EFCT_PCM_ADR(a5)    * a0.l = PCMアドレス
  62.         rts
  63.  
  64. PCM8_EFCT01_03:sub.l        #(MIX_SIZE*2)/3,EFCT_PCM_LEN(a5)    * 1/3再生(5.2kHz)
  65.         bgt        @f
  66.         bsr        PCM8_EFCT_end
  67.  
  68. @@:        movea.l        EFCT_PCM_ADR(a5),a0    * a0.l = PCMアドレス
  69.         moveq.l        #(MIX_SIZE*2)/3-1,d6    * 16bitPCM 変換
  70. 1:        move.b        (a0)+,d0
  71.         ext.w        d0
  72.         add.w        d0,(a1)+
  73.         add.w        d0,(a1)+
  74.         add.w        d0,(a1)+
  75.         dbra        d6,1b
  76.  
  77.         move.l        a0,EFCT_PCM_ADR(a5)    * a0.l = PCMアドレス
  78.         rts
  79.  
  80.  
  81. PCM8_EFCT01_02:sub.l        #(MIX_SIZE*2)/2,EFCT_PCM_LEN(a5)    * 1/2再生(7.8kHz)
  82.         bgt        @f
  83.         bsr        PCM8_EFCT_end
  84.  
  85. @@:        movea.l        EFCT_PCM_ADR(a5),a0    * a0.l = PCMアドレス
  86.         moveq.l        #MIX_SIZE/2-1,d6    * 16bitPCM 変換
  87. 1:        move.b        (a0)+,d0
  88.         ext.w        d0
  89.         add.w        d0,(a1)+
  90.         add.w        d0,(a1)+
  91.         dbra        d6,1b
  92.  
  93.         move.l        a0,EFCT_PCM_ADR(a5)    * a0.l = PCMアドレス
  94.         rts
  95.  
  96. PCM8_EFCT02_03:sub.l        #(MIX_SIZE*2*2)/3,EFCT_PCM_LEN(a5)    * 2/3再生(10.4kHz)
  97.         bgt        @f
  98.         bsr        PCM8_EFCT_end
  99.  
  100. @@:        movea.l        EFCT_PCM_ADR(a5),a0    * a0.l = PCMアドレス
  101.         moveq.l        #(MIX_SIZE*2*2)/3/8-1,d6
  102. 1:
  103.         REPT        8
  104.         move.b        (a0)+,d0
  105.         ext.w        d0
  106.         add.w        d0,(a1)+
  107.         add.w        d0,(a1)+
  108.         move.b        (a0)+,d0
  109.         ext.w        d0
  110.         add.w        d0,(a1)+
  111.         ENDM
  112.         dbra        d6,1b
  113.  
  114.         move.l        a0,EFCT_PCM_ADR(a5)    * a0.l = PCMアドレス
  115.         rts
  116.  
  117.  
  118. PCM8_EFCT01_01:sub.l        #MIX_SIZE*2,EFCT_PCM_LEN(a5)    * 1/1 再生 (15.6kHz)
  119.         bgt        @f
  120.         bsr        PCM8_EFCT_end
  121.  
  122. @@:        movea.l        EFCT_PCM_ADR(a5),a0    * a0.l = PCMアドレス
  123.         moveq.l        #MIX_SIZE*2/8-1,d6
  124. 1:
  125.         REPT        8
  126.         move.b        (a0)+,d0
  127.         ext.w        d0
  128.         add.w        d0,(a1)+
  129.         ENDM
  130.         dbra        d6,1b
  131.  
  132.         move.l        a0,EFCT_PCM_ADR(a5)    * a0.l = PCMアドレス
  133.         rts
  134.  
  135. PCM8_EFCT04_03:sub.l        #(MIX_SIZE*2*4)/3,EFCT_PCM_LEN(a5)    * 4/3再生(20.8kHz)
  136.         bgt        @f
  137.         bsr        PCM8_EFCT_end
  138.  
  139. @@:        movea.l        EFCT_PCM_ADR(a5),a0    * a0.l = PCMアドレス
  140.         moveq.l        #(MIX_SIZE*2*2)/3/8-1,d6
  141. 1:
  142.         REPT        8
  143.         move.b        (a0)+,d0
  144.         ext.w        d0
  145.         add.w        d0,(a1)+
  146.         move.b        (a0)+,d0
  147.         ext.w        d0
  148.         add.w        d0,(a1)+
  149.  
  150.         move.b        (a0)+,d0
  151.         ext.w        d0
  152.         add.w        d0,(a1)+
  153.         addq.l        #1,a0
  154.         ENDM
  155.         dbra        d6,1b
  156.  
  157.         move.l        a0,EFCT_PCM_ADR(a5)    * a0.l = PCMアドレス
  158.         rts
  159.  
  160.  
  161. PCM8_EFCT02_01:sub.l        #MIX_SIZE*2*2,EFCT_PCM_LEN(a5)    * 2/1 再生 (31.2kHz)
  162.         bgt        @f
  163.         bsr        PCM8_EFCT_end
  164.  
  165. @@:        movea.l        EFCT_PCM_ADR(a5),a0    * a0.l = PCMアドレス
  166.         moveq.l        #MIX_SIZE*2/8-1,d6
  167. 1:
  168.         REPT        8
  169.         move.b        (a0)+,d0
  170.         ext.w        d0
  171.         add.w        d0,(a1)+
  172.         addq.l        #1,a0
  173.         ENDM
  174.         dbra        d6,1b
  175.  
  176.         move.l        a0,EFCT_PCM_ADR(a5)    * a0.l = PCMアドレス
  177.         rts
  178.  
  179. PCM8_EFCT08_03:sub.l        #(MIX_SIZE*4*4)/3,EFCT_PCM_LEN(a5)    * 8/3再生(20.8kHz)
  180.         bgt        @f
  181.         bsr        PCM8_EFCT_end
  182.  
  183. @@:        movea.l        EFCT_PCM_ADR(a5),a0    * a0.l = PCMアドレス
  184.         moveq.l        #(MIX_SIZE*2*2)/3/8-1,d6
  185. 1:
  186.         REPT        8
  187.         move.b        (a0)+,d0
  188.         ext.w        d0
  189.         add.w        d0,(a1)+
  190.         addq.l        #2,a0
  191.  
  192.         move.b        (a0)+,d0
  193.         ext.w        d0
  194.         add.w        d0,(a1)+
  195.         addq.l        #2,a0
  196.  
  197.         move.b        (a0)+,d0
  198.         ext.w        d0
  199.         add.w        d0,(a1)+
  200.         addq.l        #1,a0
  201.         ENDM
  202.         dbra        d6,1b
  203.  
  204.         move.l        a0,EFCT_PCM_ADR(a5)    * a0.l = PCMアドレス
  205.         rts
  206.  
  207.  
  208. PCM8_EFCT04_01:sub.l        #MIX_SIZE*4*2,EFCT_PCM_LEN(a5)    * 4/1 再生 (31.2kHz)
  209.         bgt        @f
  210.         bsr        PCM8_EFCT_end
  211.  
  212. @@:        movea.l        EFCT_PCM_ADR(a5),a0    * a0.l = PCMアドレス
  213.         moveq.l        #MIX_SIZE*2/8-1,d6
  214. 1:
  215.         REPT        8
  216.         move.b        (a0)+,d0
  217.         ext.w        d0
  218.         add.w        d0,(a1)+
  219.         addq.l        #3,a0
  220.         ENDM
  221.         dbra        d6,1b
  222.  
  223.         move.l        a0,EFCT_PCM_ADR(a5)    * a0.l = PCMアドレス
  224.         rts
  225.  
  226.  
  227.  
  228. PCM8_EFCT_end:    move.b        EFCT_PLAY_MODE(a5),d0
  229.         bne        @f
  230. 1:        clr.b        ADPCM_SYSWORK.w            * 通常再生
  231.         clr.b        EFCT_PLAY_FLAG(a5)
  232.         addq.l        #4,sp
  233.         rts
  234. @@:        cmpi.b        #$01,d0
  235.         bne        @f
  236.         subi.l        #1,EFCT_CTBL_N(a5)        * アレイチェーン
  237.         beq        1b
  238.         movea.l        EFCT_CTBL_ADR(a5),a0
  239.         move.l        (a0)+,EFCT_PCM_ADR(a5)
  240.         clr.w        EFCT_PCM_LEN(a5)
  241.         move.w        (a0)+,EFCT_PCM_LEN+2(a5)
  242.         move.l        a0,EFCT_CTBL_ADR(a5)
  243.         rts
  244.  
  245. @@:        move.l        EFCT_CTBL_ADR(a5),d0        * リンクアレイチェーン
  246.         beq        1b
  247.         movea.l        d0,a0
  248.         move.l        (a0)+,EFCT_PCM_ADR(a5)
  249.         clr.w        EFCT_PCM_LEN(a5)
  250.         move.w        (a0)+,EFCT_PCM_LEN+2(a5)
  251.         move.l        (a0)+,EFCT_CTBL_ADR(a5)
  252.         rts
  253.